<?php

class SiteController extends Controller {

    /**
     * Declares class-based actions.
     */
    public function actions() {
        return array(
            // captcha action renders the CAPTCHA image displayed on the contact page
            'captcha' => array(
                'class' => 'CCaptchaAction',
                'backColor' => 0xFFFFFF,
            ),
            // page action renders "static" pages stored under 'protected/views/site/pages'
            // They can be accessed via: index.php?r=site/page&view=FileName
            'page' => array(
                'class' => 'CViewAction',
            ),
        );
    }

    public function actionAjaxChartData() {
        echo 'sexy';
    }

    public function actionDPStatuses() {
        $query = "select s.Name as s_title, year(z.createdDatetime) as s_year,month(z.createdDatetime) as s_month, count(*) as s_value
                    from tblZajavki_Desk4233325000 z
                    left join tblStatusy_zajavok_Desk4238017000 s on s.Oid = z.Status4241906000
                    where year(z.createdDatetime)=2014
                    group by s.Name,
                    year(z.createdDatetime),month(z.createdDatetime)
                    order by 
                    year(z.createdDatetime),month(z.createdDatetime),s.Name";

        $result = Yii::app()->db->createCommand($query)->queryAll(true);

        $data = [
            0 => [
                0 => '№',
                1 => 'Статусы',
                '20141' => 'Январь',
                '20142' => 'Февраль',
                '20143' => 'Март',
                '20144' => 'Апрель',
                '20145' => 'Май',
                '20146' => 'Июнь',
                '20147' => 'Июль',
                '20148' => 'Август',
                '20149' => 'Сентябрь',
                '201410' => 'Октябрь'
            ]
        ];
        $_t = [
            0 => 0,
            1 => 0,
            '20141' => 0,
            '20142' => 0,
            '20143' => 0,
            '20144' => 0,
            '20145' => 0,
            '20146' => 0,
            '20147' => 0,
            '20148' => 0,
            '20149' => 0,
            '201410' => 0
        ];

        foreach ($result as $key => $value) {
            if (empty($value['s_title']))
                $value['s_title'] = 'Не указан';
            $foundkey = $this->findArrayKey($data, 1, $this->cu($value['s_title']));
            $keyname = $value['s_year'] . $value['s_month'];
            if ($foundkey !== false) {
                $data[$foundkey][$keyname] = $value['s_value'];
            } else {
                $data[] = $_t;
                $data[count($data) - 1][0] = count($data) - 1;
                $data[count($data) - 1][1] = $this->cu($value['s_title']);
                $data[count($data) - 1][$keyname] = $value['s_value'];
            }
        }

        $this->render('report', array('data' => $data));
    }

    private function cu($text) {
        if (stripos(PHP_OS, 'WIN') !== FALSE)
            return $text;
        else
            return iconv("cp1251", "utf-8", $text);
    }

    private function findArrayKey(&$array, $column, $key) {
        foreach ($array as $_key => $_value) {
            if ($_value[$column] === $key)
                return $_key;
        }
        return false;
    }

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex() {
        // renders the view file 'protected/views/site/index.php'
        // using the default layout 'protected/views/layouts/main.php'
        $this->render('index');
    }

    /**
     * This is the action to handle external exceptions.
     */
    public function actionError() {
        if ($error = Yii::app()->errorHandler->error) {
            if (Yii::app()->request->isAjaxRequest)
                echo $error['message'];
            else
                $this->render('error', $error);
        }
    }

    /**
     * Displays the contact page
     */
    public function actionContact() {
        $model = new ContactForm;
        if (isset($_POST['ContactForm'])) {
            $model->attributes = $_POST['ContactForm'];
            if ($model->validate()) {
                $name = '=?UTF-8?B?' . base64_encode($model->name) . '?=';
                $subject = '=?UTF-8?B?' . base64_encode($model->subject) . '?=';
                $headers = "From: $name <{$model->email}>\r\n" .
                        "Reply-To: {$model->email}\r\n" .
                        "MIME-Version: 1.0\r\n" .
                        "Content-Type: text/plain; charset=UTF-8";

                mail(Yii::app()->params['adminEmail'], $subject, $model->body, $headers);
                Yii::app()->user->setFlash('contact', 'Thank you for contacting us. We will respond to you as soon as possible.');
                $this->refresh();
            }
        }
        $this->render('contact', array('model' => $model));
    }

    /**
     * Displays the login page
     */
    public function actionLogin() {
        $model = new LoginForm;

        // if it is ajax validation request
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }

        // collect user input data
        if (isset($_POST['LoginForm'])) {
            $model->attributes = $_POST['LoginForm'];
            // validate user input and redirect to the previous page if valid
            if ($model->validate() && $model->login())
                $this->redirect(Yii::app()->user->returnUrl);
        }
        // display the login form
        $this->render('login', array('model' => $model));
    }

    /**
     * Logs out the current user and redirect to homepage.
     */
    public function actionLogout() {
        Yii::app()->user->logout();
        $this->redirect(Yii::app()->homeUrl);
    }

}
